package com.clear.builder;

/**
 * 指挥者（Director）类
 * todo 根据传入的 具体创建者 动态指定产品的创建流程
 */
public class HtmlDirector {
    private HtmlDocumentBuilder builder;

    // 传入具体建造者
    // todo 传入具体建造者有两种方式： 构造器传入、setter传入
    public HtmlDirector(HtmlDocumentBuilder htmlDocumentBuilder) {
        this.builder = htmlDocumentBuilder;
    }

    // 定义具体创建产品的流程（方法）
    public void constructDocument(){
        builder.createNewHtmlDocument();
        builder.buildHeader();
        builder.buildBody();
        builder.buildFooter();
    }

    /**
     * 调用该方法可以拿到建造出来的产品
     * @return
     */
    public HtmlDocument getDocument() {
        return builder.getDocument();
    }
}
